from collections import OrderedDict
from rest_framework.response import Response
from rest_framework.pagination import PageNumberPagination


class MyPageNumberPagination(PageNumberPagination):
    # 默认每页大小
    page_size = 2 # 后端重写的数值，想要定义，需要复制给下方的page_size_query_param

    # 每页指定的大小
    page_size_query_param = "pagesize" #前端默认分页每页10，如果加下划线就不是用前端，而是用自己上面定义的每页2条数据

    # 指定每页最大多少数据
    max_page_size = 20 # 最大页数

    def get_paginated_response(self, data):
        return Response(OrderedDict([    #OrderedDict 也是 dict 的子类，它可以“维护”添加 key-value 的顺序。
            # 先添加的 key-value 对排在前面，后添加的 key-value 对排在后面。由于 OrderedDict 能维护 key-value 对
            # 的添加顺序，因此即使两个 OrderedDict 中的 key-value 对完全相同，但只要它们的顺序不同，程序在判断它们是否相等时也依然
            # 会返回 false。
            ('pages', self.page.paginator.num_pages),  #这里还是不太明白
            ('page', self.page.number),
            ('lists', data)
        ]))
    """
        def get_paginated_response(self, data):
        return Response(OrderedDict([
            ('count', self.page.paginator.count),
            ('next', self.get_next_link()),
            ('previous', self.get_previous_link()),
            ('results', data)
        ]))
    """